package com.tydic.system.domain.req;


import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 文件签署信息列表
 *
 * @author zr
 * @date 2023-09-14 17:34
 */
@Data
@NoArgsConstructor

public class DocSignInfoDTO {
    /**
     * 上传文件接口返回的文件id，文件在当前系统的唯一识别标识
     */
    private String fileId;
    /**
     * 个人章信息
     */
    private PersonSealDTO personSealDTO;
    /**
     * 企业章信息
     */
    private List<CompanySeal> companySealDTO;
    /**
     * 日期章信息
     */
    private DateSealDTO dateSealDTO;

    /**
     * 是否必须加盖骑缝章。0:否（默认），1:是
     */
    private Integer isAddAcrossSeal;
    /**
     * 骑缝章信息
     */
    /**
     * 骑缝章信息
     */
    private AcrossSealDTO acrossSealDTO;

    /**
     * 个人章信息
     */
    @Data
    @NoArgsConstructor
    public static class PersonSealDTO {
        /**
         * 定位关键字
         */
        private String keyWord;
        /**
         * 定位关键字策略关键字签章策略
         * 0：所有关键字签章 （默认）；
         * 1：第一个关键字签章 ；
         * 2：最后一个关键字签章；
         */
        private Integer keyWordPolicy;
        /**
         * 关键字X轴偏移量,默认为0.00，不偏移。
         * 正数向右，负数向左
         */
        private Double offsetX;
        /**
         * 关键字Y轴偏移量,默认为0.00，不偏移。
         * 正数向下，负数向上
         */
        private Double offsetY;
        /**
         * 签章坐标信息
         */
        private List<LocateCoordinate> locateCoordinates;


    }

    /**
     * 企业章信息
     */
    @Data
    @NoArgsConstructor
    public static class CompanySeal {
        /**
         * 定位关键字
         */
        private String keyWord;
        /**
         * 印章在当前系统的唯一识别标识，
         * 推送门户签：不传此值则门户自行选择章（此时展示哪些授权印章由门户决定），
         * 传了此值，则在门户仅展示传的印章；
         */
        private String sealId;
        /**
         * 定位关键字策略关键字签章策略
         * 0：所有关键字签章 （默认）；
         * 1：第一个关键字签章 ；
         * 2：最后一个关键字签章；
         */
        private Integer keyWordPolicy;
        /**
         * 关键字X轴偏移量,默认为0.00，不偏移。
         * 正数向右，负数向左
         */
        private Double offsetX;
        /**
         * 关键字Y轴偏移量,默认为0.00，不偏移。
         * 正数向下，负数向上
         */
        private Double offsetY;
        private List<LocateCoordinate> locateCoordinates;
    }

    /**
     * 日期章信息
     */
    @Data
    @NoArgsConstructor
    public static class DateSealDTO {
        /**
         * 日期格式，1：yyyy-MM-dd 默认，2：yyyy年MM月dd日
         */
        private Integer dateFormatType;
        /**
         * 定位关键字
         */
        private String keyWord;
        /**
         * 定位关键字策略关键字签章策略
         * 0：所有关键字签章 （默认）；
         * 1：第一个关键字签章 ；
         * 2：最后一个关键字签章；
         */
        private Integer keyWordPolicy;
        /**
         * 关键字X轴偏移量,默认为0.00，不偏移。
         * 正数向右，负数向左
         */
        private Double offsetX;
        /**
         * 关键字Y轴偏移量,默认为0.00，不偏移。
         * 正数向下，负数向上
         */
        private Double offsetY;
        private List<LocateCoordinate> locateCoordinates;
    }

    /**
     * 骑缝章信息
     */
    @Data
    @NoArgsConstructor
    public static class AcrossSealDTO {
        /**
         * 骑缝章印章Id，印章在当前系统的唯一识别标识
         */
        private String sealId;
        /**
         * 骑缝章盖章y坐标，当选择加盖骑缝章时，传了y坐标则在指定的签署位置上加盖骑缝章
         */
        private Double acrossSealY;
        /**
         * 骑缝章应用页面,1：全部页面；2：奇数页面，3：偶数页面，4：自定义页数
         */
        private Integer pageType;
        /**
         * 骑缝章盖章页数，当“骑缝章应用页面”为“自定义区间”时，必填，
         * 用"-"做间隔。格式为1-50，则在1-50页区间范围内盖章
         */
        private String customPage;
    }

    /**
     * 签章坐标
     */
    @Data
    @NoArgsConstructor
    public static class LocateCoordinate {
        /**
         * 签章页码，从0开始
         */
        /**
         * 签章页码，从0开始
         */
        private Integer pageNum;
        /**
         * 签章x轴，以页面左上角为原点开始计算，正数向右，负数无效
         */
        /**
         * 签章x轴，以页面左上角为原点开始计算，正数向右，负数无效
         */
        private Double x;
        /**
         * 签章y轴，以页面左上角为原点开始计算，正数向下，负数无效
         */
        /**
         * 签章y轴，以页面左上角为原点开始计算，正数向下，负数无效
         */
        private Double y;
    }

}
